package com.ponhu.ea2.service.facade;

import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.ponhu.ea2.constants.CommonConstant;
import com.ponhu.ea2.dto.CloudTradeGoodsDto;
import com.ponhu.ea2.dto.CloudTradeGoodsV2Dto;
import com.ponhu.ea2.dto.DictItemDataDto;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @author Wang
 * @date 2021/10/20 4:50 下午
 */
public interface CloudTradeService {
    /**
     * 转换云商来的图片域名
     *
     * @param imgUrl
     * @return
     */
    default String convertCloudTradeImgDomain(String imgUrl) {
        if (imgUrl == null) {
            return null;
        }

        //排除需要转换的域名
        if(imgUrl.toLowerCase().startsWith("https://")){
            return imgUrl;
        }

        return imgUrl.replaceAll("^(?:http|https)://[^/]+/(.*)",
                CommonConstant.GOODS_CENTER_IMG_DOMAIN + "/$1");
    }

    default String convertCloudTradeImgDomain(List<String> imgUrlList) {
        if (CollectionUtils.isEmpty(imgUrlList)) {
            return null;
        }
        return imgUrlList.stream().map(this::convertCloudTradeImgDomain).collect(Collectors.joining("|"));

    }

    boolean addOrUpdateDictItem(List<DictItemDataDto> dictItemDataList);

    /**
     * 添加云商商品
     *
     * @param cloudTradeGoodsDto
     * @return
     */
    @Deprecated
    boolean addCloudTradeGoods(CloudTradeGoodsDto cloudTradeGoodsDto);

    /**
     * 添加云商商品(V2)
     *
     * @param cloudTradeGoodsDto
     * @return
     */
    boolean addCloudTradeGoodsV2(CloudTradeGoodsV2Dto cloudTradeGoodsDto);

    /**
     * 批量添加云商商品
     *
     * @param cloudTradeGoodsDtoList
     * @return
     */
    boolean addCloudTradeGoodsList(List<CloudTradeGoodsDto> cloudTradeGoodsDtoList);

    /**
     * 批量添加云商商品(V2)
     *
     * @param cloudTradeGoodsDtoList
     * @return
     */
    boolean addCloudTradeGoodsListV2(List<CloudTradeGoodsV2Dto> cloudTradeGoodsDtoList);

    /**
     * 更新云商商品
     *
     * @param cloudTradeGoodsDto
     * @return
     */
    boolean updateCloudTradeGoods(CloudTradeGoodsDto cloudTradeGoodsDto);

    /**
     * 更新云商商品
     *
     * @param cloudTradeGoodsDto
     * @return
     */
    boolean updateCloudTradeGoodsV2(CloudTradeGoodsV2Dto cloudTradeGoodsDto);
}
